﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.LightSwitch;

namespace LightSwitchApplication.UserCode
{
    public class CustomPropertiesHandling
    {
        private tlCustomProperty CustomProperty;
        private tlCustomPropertyChoices CustomPropertyChoice;
        private string CustomPropertyValue;

        public CustomPropertiesHandling(tlCustomProperty CustomProperty, tlCustomPropertyChoices CustomPropertyCoice, string CustomPropertyValue)
        {
            this.CustomProperty = CustomProperty;
            this.CustomPropertyChoice = CustomPropertyCoice;
            this.CustomPropertyValue = CustomPropertyValue;
        }

        public void CustomPropertyValue_Validate(EntityValidationResultsBuilder results)
        {
            if (CustomProperty == null)
                return;

            if (CustomProperty.IsChooseable
                && IsValidValue(CustomPropertyValue))
                results.AddPropertyError("Für die gewählte Eigenschaft darf kein Freitext eingegeben werden.");

            if (!CustomProperty.IsChooseable
                && !IsValidValue(CustomPropertyValue))
                results.AddPropertyError("Für die gewählte Eigenschaft muss ein Freitext eingegeben werden.");
        }

        public void tlCustomPropertyChoices_Validate(EntityValidationResultsBuilder results)
        {
            if (CustomProperty == null)
                return;

            if (!CustomProperty.IsChooseable
                && CustomPropertyChoice != null)
                results.AddPropertyError("Für die gewählte Eigenschaft darf kein Wert gewählt werden.");

            if (CustomProperty.IsChooseable
                && CustomPropertyChoice == null)
                results.AddPropertyError("Für die gewählte Eigenschaft muss ein Wert gewählt werden.");
        }

        private bool IsValidValue(string Value)
        {
            if (Value == "" || Value == null)
                return false;
            
            return true;
        }
    }
}
